OpenFeign ব্যবহার করে HTTP Request করা

Java Technologies - স্প্রিং বুট ক্লায়েন্ট (Spring Boot Client) - Spring Boot এবং OpenFeign Integration
157

OpenFeign হলো Spring Cloud-এর একটি ডিক্লারেটিভ HTTP ক্লায়েন্ট। এটি REST API-এর সাথে যোগাযোগ করার জন্য সহজ এবং কার্যকর সমাধান প্রদান করে। Feign ব্যবহার করে আপনি HTTP রিকোয়েস্ট তৈরি করতে পারেন একদম ডিক্লারেটিভ স্টাইলে, যেমন একটি ইন্টারফেস ডিফাইন করে।


OpenFeign-এর বৈশিষ্ট্য

  1. ডিক্লারেটিভ পদ্ধতি:
    • HTTP রিকোয়েস্ট ম্যানুয়ালি কোড করার পরিবর্তে সহজ ডিক্লারেটিভ পদ্ধতিতে লেখা যায়।
  2. সহজ ইন্টিগ্রেশন:
    • Spring Boot এবং Spring Cloud-এর সঙ্গে সহজ ইন্টিগ্রেশন।
  3. লোড ব্যালেন্সিং সমর্থন:
    • Spring Cloud Load Balancer বা Eureka-এর মাধ্যমে লোড ব্যালেন্সিং সমর্থন করে।
  4. বিভিন্ন HTTP মেথড সমর্থন:
    • GET, POST, PUT, DELETE, ইত্যাদি সহজে ব্যবহার করা যায়।

OpenFeign সেটআপ এবং ব্যবহার

1. ডিপেনডেন্সি যোগ করা

আপনার pom.xml-এ OpenFeign এর ডিপেনডেন্সি যোগ করুন।

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

2. Feign Client সক্রিয় করা

Feign Client ব্যবহার করতে @EnableFeignClients অ্যানোটেশনটি আপনার মেইন ক্লাসে যোগ করুন।

@SpringBootApplication
@EnableFeignClients
public class FeignClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(FeignClientApplication.class, args);
    }
}

3. Feign Client তৈরি করা

একটি ইন্টারফেস তৈরি করুন এবং HTTP মেথডের জন্য Spring MVC অ্যানোটেশন ব্যবহার করুন।

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

@FeignClient(name = "jsonplaceholder", url = "https://jsonplaceholder.typicode.com")
public interface JsonPlaceholderClient {

    @GetMapping("/posts/{id}")
    String getPostById(@PathVariable("id") Long id);
}

ব্যাখ্যা:

  • @FeignClient: Feign-এর মাধ্যমে এই ইন্টারফেসটি HTTP রিকোয়েস্ট পরিচালনা করবে।
  • name: Feign Client-এর একটি নাম।
  • url: যে API এর সঙ্গে যোগাযোগ করতে হবে।
  • @GetMapping: HTTP GET রিকোয়েস্ট নির্দেশ করে।
  • @PathVariable: URL প্যারামিটার হিসেবে ID পাঠায়।

4. Feign Client ব্যবহার করা

একটি Spring Controller বা Service-এ Feign Client ইনজেক্ট করে ব্যবহার করুন।

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class PostController {

    private final JsonPlaceholderClient jsonPlaceholderClient;

    public PostController(JsonPlaceholderClient jsonPlaceholderClient) {
        this.jsonPlaceholderClient = jsonPlaceholderClient;
    }

    @GetMapping("/post/{id}")
    public String getPostById(@PathVariable("id") Long id) {
        return jsonPlaceholderClient.getPostById(id);
    }
}

5. অ্যাপ্লিকেশন চালানো এবং API কল করা

Spring Boot অ্যাপ্লিকেশন চালিয়ে /post/{id} এপয়েন্টে কল করুন। উদাহরণ:

GET http://localhost:8080/post/1

OpenFeign-এর মাধ্যমে POST Request করা

OpenFeign দিয়ে POST রিকোয়েস্ট তৈরি করা যায় সহজেই। উদাহরণস্বরূপ:

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

@FeignClient(name = "jsonplaceholder", url = "https://jsonplaceholder.typicode.com")
public interface JsonPlaceholderClient {

    @PostMapping("/posts")
    String createPost(@RequestBody Post post);
}

class Post {
    private String title;
    private String body;
    private Long userId;

    // Getters and Setters
}

Controller-এ POST রিকোয়েস্ট কল:

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class PostController {

    private final JsonPlaceholderClient jsonPlaceholderClient;

    public PostController(JsonPlaceholderClient jsonPlaceholderClient) {
        this.jsonPlaceholderClient = jsonPlaceholderClient;
    }

    @PostMapping("/create-post")
    public String createPost(@RequestBody Post post) {
        return jsonPlaceholderClient.createPost(post);
    }
}

Feign Client কাস্টমাইজেশন

1. হেডার যোগ করা

আপনার রিকোয়েস্টে কাস্টম হেডার যোগ করতে @RequestHeader ব্যবহার করুন।

@FeignClient(name = "jsonplaceholder", url = "https://jsonplaceholder.typicode.com")
public interface JsonPlaceholderClient {

    @GetMapping("/posts/{id}")
    String getPostById(@PathVariable("id") Long id, 
                       @RequestHeader("Authorization") String token);
}

2. ডিফল্ট কনফিগারেশন

Feign Client-এর জন্য ডিফল্ট টাইমআউট বা রিট্রাই কনফিগারেশন সেট করা যায়।

@Bean
public Request.Options requestOptions() {
    return new Request.Options(5000, 10000); // Connect and Read timeout
}

উপসংহার

  • OpenFeign হলো Spring Boot-এ HTTP রিকোয়েস্ট করার একটি সহজ এবং কার্যকর পদ্ধতি।
  • এটি ডিক্লারেটিভ HTTP ক্লায়েন্ট পদ্ধতি ব্যবহার করে কোডকে আরও রিডেবল এবং মেইনটেইনেবল করে তোলে।
  • Spring Boot এর মধ্যে Feign Client ব্যবহার করা নতুন মাইক্রোসার্ভিস আর্কিটেকচারের জন্য অত্যন্ত উপযোগী।
Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...